﻿using System;
using System.ComponentModel;
using ApplicationGenerator.CommonModule;

namespace ApplicationGenerator.Lists.Web
{
    /// <summary>
    /// Akcja pozwalająca na kontynuowanie procesu
    /// </summary>
    [Serializable]
    public class ListActionContinueWorkflow : ListActionBase
    {
        #region Overrides
        /// <summary>
        /// Wykonuje akcję
        /// </summary>
        public override void ExecuteAction()
        {
            if (string.IsNullOrEmpty(ListControl.Page.Request.QueryString[QuerryStringConstants.ElementId]))
            {
                ListControl.AddErrorMessage("Nie można pobrać id instancji aktualnego procesu");
                return;
            }

            if (string.IsNullOrEmpty(ListControl.Page.Request.QueryString[QuerryStringConstants.WorkflowGuid]))
            {
                ListControl.AddErrorMessage("Nie można pobrać id aktualnego procesu");
                return;
            }

            int workflowInstanceId = 0;
            if (!int.TryParse(ListControl.Page.Request.QueryString[QuerryStringConstants.ElementId], out workflowInstanceId))
            {
                ListControl.AddErrorMessage("Nie można pobrać id instancji aktualnego procesu");
                return;
            }

            ListControl.Page.Response.Redirect(
                QuerryStringConstants.GenerateContinueWorkflowUrl(
                ListControl.Page.Request.QueryString[QuerryStringConstants.WorkflowGuid],
                ListControl.Page.Request.QueryString[QuerryStringConstants.ElementId]));
        }

        /// <summary>
        /// Zwraca nazwę akcji
        /// </summary>
        /// <returns>Nazwa akcji</returns>
        public override string ToString()
        {
            return "Akcja Kontynuuj proces";
        }
        #endregion
    }
}
